<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>    
        // 函数柯理化
        // 把一次传递两个参数  变成两次传递 每次传递一个 
        // 好处 把第一次传递的参数保存下来了 (延长它的生命周期)


        // 实现方案  闭包  

        // 函数 里边写函数 
        // 内部函数 可以使用外部函数的私有变量和参数  
        // 即使外部函数已经return 结束 (因为函数的执行空间不会被销毁)



        // 正则表达式 

        // 验证密码   6-30位  只能字母数字下划线!-
        // var reg = /[0-9A-Za-z_!\-]{6,30}/;
        // alert(reg.test('asdfsadf!01'))

        // function testPwd(str){
        //     return /[0-9A-Za-z_!\-]{6,30}/.test(str);
        // }


        function testPwdPro(reg,str){
            return reg.test(str);
        }
        // alert(testPwdPro(/[0-9A-Za-z_!\-]{6,30}/,'nopassword666-'))


        // 由上面的依次传递两个 到后边的分两次 一次传递一个 
        // 外边函数传递一个 里边函数传递一个 

        function testPwdPro2(reg){
            return function(str){
                return reg.test(str)
            }
        }

        // const fn1 = testPwdPro2(/^[\w]{6,30}$/); // 结果是个函数
        // const fn2 = testPwdPro2(/^[\w]{6,12}$/); // 结果是个函数 
        // const fn3 = testPwdPro2(/^[0-9a-zA-Z]{6,15}$/); // 结果是个函数 
        // console.log(fn1('abc123!'));
        // console.log(fn1('12qwaszxsadfasdf'));
        // console.log(fn2('12qwaszxsadfasdf'));
        // console.log(fn2('abc'));
        // console.log(fn2('abc123666!'));
        // console.log(fn2('password99%'));
        // console.log(fn3('12qwaszxsadfasdf'));



        // 求和: 
        //  10+x

        // 利用函数柯里化  分两次传  每次传一个

        function outer(num1){
            return function(num2){
                return num1+num2
            }
        }

        outer(10);// 返回值是个函数function(num2){return num1+num2}
        console.log(outer(10)(100));
        console.log(outer(10)(1000));
        console.log(outer(10)(10000));


        // https://www.baidu.com
        // https://www.baidu.com:443?s=kangbazi&name=zhangsan
        // https://www.baidu.com:443?s=kangbazi&name=zhangsan#123






    </script>
</body>
</html>